package com.itany.corejava.code06_数组;

import java.util.Arrays;

/**
 * @author MissChen
 * @version 1.0
 * @date 2023 年10月27日 15:45
 */
public class Zuoye {
    public static void main(String[] args) {
        // int[][] arrs=transformArr();
        // for(int i=0;i<arrs.length;i++){
        //     System.out.println(Arrays.toString(arrs[i]));
        // }

        // int[] arrs={20,30,79,100,45};
        // int[] arrs2=new int[arrs.length];
        // int[] res=copyArray(arrs,arrs2);
        // System.out.println(Arrays.toString(res));

        // int[] arrs={20,30,79,100,45};
        // String str=arrToStr(arrs);
        // System.out.println(str);

        // int[] arrs={20,30,79,100,45};
        // int[] res=changeLoc(arrs,1,3);
        // System.out.println(Arrays.toString(res));

        int[] arrs=createArr(5,10,20);
        System.out.println(Arrays.toString(arrs));

    }


    //定义一个方法，生成一个六行六列的二维数组，每一列的值是90-100之间的随机整数值，有返回值
    public static int[][] transformArr(){
        // Math.random()*(y-x+1)+x
        int[][] arrs=new int[6][6];
        for(int i=0;i<6;i++){//外层循环控制行数
            for(int j=0;j<6;j++){//内层循环控制列数
                arrs[i][j]=(int)(Math.random()*11+90);
                System.out.print(arrs[i][j]+"\t");
            }
            System.out.println();
        }
        return arrs;
    }


    //实现将一个数组的元素全部复制到另一个新数组中去，2个参数，有返回值
    public static int[] copyArray(int[] oldArr,int[] newArr){
        for(int i=0;i<oldArr.length;i++){
            newArr[i]=oldArr[i];
        }
        return newArr;
    }


    // 实现输出数组中的元素的功能，要求在控台台输出的结果是:XX*XX*XX，一个参数，有返回值
    public static String arrToStr(int[] arr){
        String str="";
        for(int i=0;i<arr.length-1;i++){
            str+=arr[i]+"*";
        }
        str+=arr[arr.length-1];
        return str;
    }



    //实现交换数组中指定位置的两个元素的位置,三个参数，有返回值
    public static int[] changeLoc(int[] arr,int index1,int index2){
        int temp=arr[index1];
        arr[index1]=arr[index2];
        arr[index2]=temp;
        return arr;
    }

    //定义一个方法，随机生成一个int类型的数组，通过方法的参数控制数组的长度以及取值范围、
    // 其值指定范围x-y之间的整数，且不能重复
    // 参数有三个：数组长度、最小值、最大值
    // 有返回值
    public static int[] createArr(int length,int x,int y){//(5,10,20)
        int[] arr=new int[length];
        for(int i=0;i<arr.length;i++){
            //随机生成x-y的整数
            arr[i]=(int)(Math.random()*(y-x+1)+x);//arr[0]=11   arr[1]=11
            for(int j=0;j<i;j++){
                if(arr[j]==arr[i]){
                    i--;
                    break;
                }
            }

        }
        return arr;
    }

}
